iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
Kubernetes

Kubernetes 中關於網路的二三事系列 第 29

Day29 淺談 Kubernetes Liveness Probe & Readiness Probe

  • 分享至 

  • xImage
  •  

Liveness Probes和Readiness Probes是用來監控Pod內容器健康的機制,透過這些Probes,Kubernetes 可以自動化處理異常容器,確保服務的可用性。

Liveness Probe

用來判斷容器是否還「活著」,也就是說是否還在正常運行。如果Liveness Probe連續多次失敗,Kubernetes 會將此Pod標記為失敗,再依據此Pod的RestartPolicy決定是否重啟容器,用來判定應用是否進入無法恢復的狀態,如果Liveness Probe檢測到應用無法恢復會自動重啟容器。

使用情境

當應用發生死鎖或無限循環時,無法正常處理請求,Liveness Probe可以自動修復,重新啟動容器來恢復正常。

工作原理

  • 透過HTTP
    向HTTP路徑發送請求,並透過回傳的狀態碼來確認容器是否正常
  • 透過TCP
    檢查端口是否可以成功建立TCP連接
  • 透過命令
    在容器中執行命令,如果返回碼是 0,則容器被認為是健康的
livenessProbe:
      exec:
        command:
        - cat
        - /healthy
      initialDelaySeconds: 5
      periodSeconds: 5

在此範例中,每5秒執行一次cat /healthy命令來檢查健康狀態。如果容器內的/healthy文件存在能夠被成功讀取,那麼此容器是健康的;如果檢查失敗,則會認為此容器處於不健康的狀態並嘗試重啟它。

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 3
  periodSeconds: 5

在此範例中,Liveness Probe每5秒對/healthz端點發送檢查,初始會延遲3秒,來確認容器是否還在正常運行。

Readiness Probe

用來確定是否準備好處理請求。即使應用仍正常在運行,也可能在有些情況下無法處理流量。如果Readiness Probe檢測到無法處理請求,Kubernetes會從Service中的Endpoint中刪除這個Pod,以避免將流量轉發到它。

使用情境

當應用在某些情況下暫時無法對外提供服務。Readiness Probe可確保應用在這些情況下不會接收到請求。

工作原理

基本上與Liveness Probe相同,也可以使用 HTTP、TCP、或命令的方式進行檢查。

readinessProbe:
  exec:
    command:
    - cat
    - /healthy
  initialDelaySeconds: 5
  periodSeconds: 5

在這個範例中,Kubernetes會每5秒執行一次cat /healthy 命令來檢查容器的狀態。如果容器內的/healthy文件存在能夠被成功讀取,則認為這個容器準備好接收流量;如果檢查失敗,則把這個Pod從Service中的 endpoint移除,不再將流量轉發給這個容器,直到檢查再次通過。

readinessProbe:
  httpGet:
    path: /readiness
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10

在這個範例中,Readiness Probe每10秒對/readiness端點發送檢查,初始會延遲5秒,確保容器完全準備好再接受流量。

總結

Liveness Probe和Readiness Probe的結合可以讓Kubernetes能夠自動化管理容器狀態,提升容錯能力和可用性。Liveness讓健康不佳的容器被重啟,而Readiness讓未準備好的容器不接收流量,這種互相作用能夠提升服務的穩定性和保證服務持續運行。


上一篇
Day28 淺談Kubernetes Namespace
下一篇
Day30 掌握Kubernetes 學習回顧
系列文
Kubernetes 中關於網路的二三事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言